using UnityEngine;

public class Spawner : MonoBehaviour
{
    public Transform[] spawnPoints; // 出生点数组
    public SpawnData[] spawnData;//生成物体的数据配置
    float timer;
    int level;
    public float levelTime;

    void Awake()
    {
        spawnPoints = GetComponentsInChildren<Transform>();
        levelTime = GameManager.instance.maxGameTime / spawnData.Length;
    }

    void Update()
    {
        if(!GameManager.instance.isLive) return;
        // level = Mathf.Min(Mathf.FloorToInt(GameManager.instance.gameTime / levelTime), spawnData.Length - 1);
        level = GameManager.instance.level;

        timer += Time.deltaTime;
        if (timer > spawnData[level].spawnTime)
        {
            timer = 0;
            Spawn();
        }
    }

    void Spawn()
    {
        // 从对象池中获取敌人
        GameObject enemy = GameManager.instance.pool.Get(0);
        // 设置敌人的位置为随机选择的出生点
        enemy.transform.position = spawnPoints[Random.Range(1, spawnPoints.Length)].position;
        enemy.GetComponent<Enemy>().Init(spawnData[Random.Range(0, level)]);
    }
}

//用于存储生成物体的数据
[System.Serializable]
public class SpawnData
{
    public int spriteType; // 精灵索引
    public float spawnTime;// 生成时间
    public int health;// 生命值
    public float speed;// 速度
}